home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <winb.h>
- #include <te.h>
- #include <fntb.h>
- #include <gui.h>
- #include <egb.h>
- #include <guidbg.h>
-
- #include <kh.h>
-
- char *guiEgbPtr ; /* EGB のワークアドレス */
-
- int iconDialogID = -1 ;
- int dummyDButtonID = -1 ;
- int iconQuitIconID = -1 ;
- int barIconID = -1 ;
- int minIconID = -1 ;
- int maxIconID = -1 ;
-
- //#define DEBUG
-
- unsigned char beforeLevel = 1 ;
- unsigned char nowLevel = 0 ;
-
- int quitFuncRet = ILLEGAL_FUNCTION ;
-
- int userFunc(apliId, messId, info, data)
- int apliId;
- int messId;
- int info;
- int data;
- {
- register int ret;
-
- ret = ILLEGAL_FUNCTION;
-
- switch(messId)
- {
- case GM_QUIT :
- MMI_SendMessage(iconQuitIconID,MM_EXEC,2,0,0);
- ret = quitFuncRet ;
- break;
- }
-
- return(ret);
- }
-
- void main(int argc,char *argv[])
- {
- int x=276;
- int y=225;
-
- if(argc>1)
- {
- x = ((argv[1])[0])*1000 + ((argv[1])[1])*100
- + ((argv[1])[2])*10 + (argv[1])[3] - ('0'*1111);
- if(argc>2)
- y = ((argv[2])[0])*1000 + ((argv[2])[1])*100
- + ((argv[2])[2])*10 + (argv[2])[3] - ('0'*1111);
- }
- #ifdef DEBUG
- printf("(%d,%d)\n",x,y);
- #endif
-
- static MMICTRL mmi ={
- SCREEN16|SCREENIGNORE, // ページ0側解像度
- SCREENUNUSED, // ページ1側解像度
- 0, // 書き込みページ
- SCREENAVAILABLE, // 表示ページ
- 0, // 表示プライオリティ
- SCREENAVAILABLE, // 色数
- SCREENEXPAND, // VRAMの横の長さ
- 0, // メモリ領域の大きさ
- NULL, // メモリ領域のアドレス
- 0, // ユーザ領域の大きさ
- NULL, // ユーザ領域のアドレス
- 0, 0, // 画面枠 lupx,lupy
- 0, 0, // rdwx,rdwy
- -16384, -16384, // 移動枠 lupx,lupy
- 16383, 16383, // rdwx,rdwy
- 15, // 白色
- 8, // 黒色
- 7, // 灰色
- 6 // 反転色
- };
-
- extern int APL_init() ;
-
- /* 初期化処理 */
- if (MMI_Open( &mmi ) == NOERR)
- {
- /* 初期化に成功すればメインループに入る. */
- if (APL_init(x,y) == NOERR)
- MMI_ExecSystem() ;
- }
-
- /* 終了処理 */
- MMI_Close() ;
-
- }
-
- int APL_init(int sx,int sy)
- {
- extern MMIINIT initDataGUI ;
-
- register int ret ;
-
- /* EGB ワークアドレスの取得. */
- guiEgbPtr = MMI_GetEgbPtr() ;
-
- /* ユーザアイコン設定 */
- extern unsigned char *iconTbl[];
- extern int iconMaxId;
- MMI_SetIconTable(iconTbl, iconMaxId);
-
- /* ハイパ型部品の初期化 */
- if ((ret = MMI_initHyper()) < 0)
- return ret ;
- /* ダイアログ型部品の初期化 */
- if ((ret = MMI_initDialogL40()) < 0)
- return ret ;
- /* ボタン型部品の初期化 */
- if ((ret = MMI_initButtonL40()) < 0)
- return ret ;
- /* ドロウボタン型部品の初期化 */
- if ((ret = MMI_initDrawButtonL40()) < 0)
- return ret ;
- /* アイコンボタン型部品の初期化 */
- if ((ret = MMI_initIconL40()) < 0)
- return ret ;
-
- /* 背景データの初期化 */
-
- /* データの登録 */
- if ((ret = MMI_Init(&initDataGUI)) < 0)
- return ret ;
-
- // Tmenuにパレットを合わせる
- KH_initGuiColor();
-
- // 初期位置に移動
- HYPER hyp;
- FRAME fr;
- MMI_SendMessage(iconDialogID,MM_GETHYPER,1,&hyp);
- fr.lupx = sx ;
- fr.lupy = sy ;
- fr.rdwx = sx + (hyp.fr.rdwx-hyp.fr.lupx) ;
- fr.rdwy = sy + (hyp.fr.rdwy-hyp.fr.lupy) ;
- MMI_SendMessage(iconDialogID,MM_MOVE,1,&fr);
-
- /* 背景を表示する */
- MMI_SendMessage(MMI_GetBaseObj(), MM_SHOW, 0) ;
-
- MMI_SendMessage(MMI_GetBaseObj(), MM_SETEXEC, 1, userFunc);
- MMI_CallMessage(MMI_GetApliId(), GM_TITLE, (int)"vl By 機拡", 0);
-
- extern void userIdleTask();
- MMI_SetIdleTaskFunc( userIdleTask );
- _outb(0x04e8,0x00); //ADSD FIFO flash
- userIdleTask();
-
- return NOERR ;
- }
-
- void userIdleTask(void)
- {
-
- nowLevel = (_inb(0x04e7) & 0x7f)>>3;
-
- if(nowLevel==beforeLevel) return ;
- if(nowLevel<beforeLevel) beforeLevel-- ;
- else beforeLevel = nowLevel ;
-
- MMI_SendMessage(barIconID,MM_SETSHAPE,1,513+beforeLevel);
- MMI_SendMessage(barIconID,MM_SHOW,0);
-
- return ;
- }
-
- /* initDataGUI:iconQuitIconID:MJ_ICONL40の呼び出し関数 */
- int iconQuitFunc(kobj, messId, argc, pev, trigger)
- int kobj ;
- int messId ;
- int argc ;
- EVENT *pev ;
- int trigger ;
- {
- MMI_SetHaltFlag(TRUE);
- quitFuncRet = NOERR ;
-
- return NOERR ;
- }
-